/*

cimahis - Software para el analisis de imagenes de corte histologico

Copyright (C) Andrés De Abreu 2010 <jadabreu @ gmail . com>


Este programa es software libre. Puede redistribuirlo y/o modificarlo bajo los términos
de la Licencia Pública General de GNU según es publicada por la Free Software Foundation,
bien de la versión 2 de dicha Licencia o bien (según su elección) de cualquier versión
posterior.

Este programa se distribuye con la esperanza de que sea útil, pero SIN NINGUNA GARANTÍA,
incluso sin la garantía MERCANTIL implícita o sin garantizar la CONVENIENCIA PARA UN
PROPÓSITO PARTICULAR. Véase la Licencia Pública General de GNU para más detalles.

Debería haber recibido una copia de la Licencia Pública General junto con este programa.
Si no ha sido así, escriba a la Free Software Foundation, Inc.,
en 675 Mass Ave, Cambridge, MA 02139, EEUU.

    //ACERCA DE elegirFiltros.h
    *
    * Declaracion de la clase que construye la interfaz grafica para la aplicación de
    * los filtros.

*/


#ifndef elegirFiltros_H
#define elegirFiltros_H

#include <QDialog>
#include "fstream"
#include "color/AplicarFiltros/ventanaparametrosfiltro.h"
#include "QListWidget"
#include "color/fabricaObjetos.h"
#include <QMessageBox>
#include "imagen.h"
#include "interfazSistema/interfazSistema.h"
#include "interfazUsuario/areaImagen.h"


namespace Ui {
    class elegirFiltros;
}

class elegirFiltros : public QDialog {
    Q_OBJECT
public:
    elegirFiltros(QWidget *parent = 0);
    ~elegirFiltros();
    void cargarImagen(IplImage * img); //metodo que carga la imagen que sera mostrada como vista previa
    void cargarFiltros(); // metodo para cargar los filtros de filtros.in
    void cargarArea(areaImagen *a); //metodo para tomar el areaImagen donde se encuentra la imagen que se quiere filtrar
    void actualizarVistaPrevia(); // metodo utilizado para actualizar la vista previa


protected:
    void changeEvent(QEvent *e);
    void paintEvent(QPaintEvent *event);
    IplImage * vistaPrevia,*origen;
    filtros *f;
    QMessageBox cajaAviso;
    QImage *imagenInterfaz, *imagenFiltrada;
    areaImagen *area;
    fabricaObjetos ff;




private:
    Ui::elegirFiltros *ui; //apuntador al formulario QT que contiene los elementos de la interfaz grafica
    ventanaParametrosFiltro *vf; //apuntador a la ventana de selección de parametros de filtros

private slots:
   void on_buttonBox_accepted(); //evento que se dispara al hacer click en aceptar
   void on_listWidget_itemClicked(QListWidgetItem* item); //evento que se dispara al hacer click en un elemento d la lista
   void cambiarParametros();  //cambiar los parametros del filtro seleccionado
   void restaurarImagen(); //resetear imagen de vista previa


};

#endif // elegirFiltros_H
